
from abc import ABC, abstractmethod

class AgentInterface(ABC):
    @abstractmethod
    def process(self,input_data):
        pass

class ExternalToolInterface(ABC):
    @abstractmethod
    def call(self,paras):
        pass

class RESTfulTool(ExternalToolInterface):
    def __init__(self,base_url):
        self.base_url = base_url

    def call(self,paras):
        pass


class ConcreteTool(AgentInterface):
    def __init__(self,tool):
        self.tool = tool

    def process(self,input_data):
        processed_result = self._preprocess(input_data)
        tool_result = self.tool.process(processed_result)
        final_result = self._postprocess(tool_result)

    def _preprocess(self,input_data):
        pass

    def _postprocess(self, input_data):
        pass


if __name__ == '__main__':
    rst = RESTfulTool(base_url='http://127.0.0.1:8000')
    print("success")